package idea.innovacion.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import idea.innovacion.bean.IdeaDTO;
import idea.innovacion.bean.UsuarioDTO;
import idea.innovacion.interfaces.IUsuarioDAO;
import idea.innovacion.util.ConexionDB;

public class MySqlUsuarioDAO implements IUsuarioDAO{

	// PARA REALIZAR LA BUSQUEDA DEL USUARIO 
	@Override
	public UsuarioDTO getValidarUsuario(UsuarioDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		UsuarioDTO objUsuario = null;
		String sql = null;
		Connection conn = null;
		ResultSet rs = null;
		sql = "Select * from Usuario where nombre=? and clave=?";
	
		
		conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setString(1, dto.getClave());
		rs = pstm.executeQuery();
		
		if(rs.next()){
			objUsuario = new UsuarioDTO();
			objUsuario.setIdUsuario(rs.getInt("idUsuario"));
			objUsuario.setNombre(rs.getString("Nombres"));
			objUsuario.setApellidoPaterno(rs.getString("ApellidoPaterno"));
			objUsuario.setApellidoMaterno(rs.getString("ApellidoMaterno"));
		}
		
		System.out.println();
		
		return objUsuario;
	}

	//BUSQUEDA DEL USUARIO DENTRO DE LOS INSCRITOS EN LA BD
	@Override
	public UsuarioDTO listUsuario(int idusuario , int rol) throws SQLException {
		// TODO Auto-generated method stub
		
		ArrayList<UsuarioDTO> lstUsuario = new ArrayList<UsuarioDTO>();
		UsuarioDTO objUsuario = null;
		String sql = null;
		Connection conn = null;
		ResultSet rs = null;
		
		
		sql = "Select * From Usuario where IdUsuario=? and rol=? ";
		
		conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		rs = pstm.executeQuery();
		
		while(rs.next()){
			objUsuario = new UsuarioDTO();
			objUsuario.setIdUsuario(rs.getInt("idUsuario"));
			objUsuario.setNombre(rs.getString("Nombres"));
			objUsuario.setApellidoPaterno(rs.getString("ApellidoPaterno"));
			objUsuario.setApellidoMaterno(rs.getString("ApellidoMaterno"));
			lstUsuario.add(objUsuario);
		}
		
		return objUsuario;
	}

	//INSERTAR USUARIO
	@Override
	public boolean insertUsuario(UsuarioDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		boolean retorno;
		String sql = null;
		Connection conn = null;
		sql = "Insert Usuario values (?,?,?,?,?,?,?,?,?,?,?,?)";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdUsuario());
		pstm.setString(2, dto.getNombre());
		pstm.setString(3, dto.getApellidoPaterno());
		pstm.setString(4, dto.getApellidoMaterno());
		pstm.setString(5, dto.getSexo());
		pstm.setString(6, dto.getTipoDocumento());
		pstm.setInt(7, dto.getNumeroDocumento());
		pstm.setString(8, dto.getEmail());
		pstm.setInt(9, dto.getCelular());
		pstm.setString(10, dto.getClave());
		pstm.setString(11, dto.getRol());
		pstm.setInt(12, dto.getIdPerfil());

		retorno = pstm.execute();
		
		return retorno;
		
		
	}

	//ELIMINAR UN USUARIO
	@Override
	public void deleteUsuario(UsuarioDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		
		String sql = null;
		Connection conn = null;
		sql = "Delete from Usuario where IdUsuario=?";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdUsuario());
		pstm.execute();
		
		
	}

}
